home *** CD-ROM | disk | FTP | other *** search
/ Guide To Cracking 2002 / Guide_to_Cracking_2002.iso / Tutorials / Nag and Time Trial / nag / ns54.txt < prev    next >
Encoding:
Text File  |  1997-08-25  |  18.4 KB  |  423 lines

  1. WinTar-Remote tut!                                                  24/08/97
  2. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  3. Program: WinTar-Remote
  4. Version: 2.2.1
  5. URL:http://www.spiralcomm.com 
  6. Description: i know shit about this program i picked up cause of the 
  7.              size
  8. Operating System: Windows
  9. Cracker: nIabI [Me'97]
  10. Level: Intermediate
  11. Tools: SoftICE, W32Dasm, a Hex Editor.   
  12. Protection Type: 30 day trial
  13. Encrypted/DLL: No
  14. Method: Dissasemble
  15.  
  16. 0.-index:
  17.  
  18. 0.-index
  19. 1.-Intro
  20. 2.-What We need (tools)
  21. 3.-Let's Crack the splash screen
  22. 4.- Lic. screen removal
  23. 5.- The 1s part of the time trial
  24. 6.- The 2nd part of the time trial
  25. 7.-Last Notes
  26. 8.-Notes
  27. 9.-Thak you's
  28.  
  29.  
  30.  
  31. 1.- Intro:
  32.  
  33. Hello, ok here again on another tut for C4N, this time i am goin to talk about Time Trials
  34. Even tough they are easy a lot of ppl still don't get it so this is why this tut is gone 
  35. (hopefully) teach you, also i will teach some of nag remove and bmp (splash) screens :-) 
  36.  
  37. ok, the program had to be a time trial (of course) but we need it a not to big program but one 
  38. that had some potencial in it or i could have used Rhino 3d wich is not small and does not 
  39. have any teaching potential (u changed one byte and it's cracked) so ok with the help of a
  40. friend Griml0ck we decited to get this program is called WinTAR-Remote by SpiralCom 
  41. Communications Inc. what this program does is not important to us we wil crack it and 
  42. delted it for educational purpose ONLY :-).
  43.  
  44. In this tut i will asume u know how to use all of the tools i will use here else please get other
  45. tuts that do explain how to use them (TKC's, Edison's, josephCo's and others)
  46.  
  47.  
  48. 2.- What We need (tools):
  49.  
  50. W32dasm (used mostly)
  51. SoftIce
  52. Any Hexeditor
  53. a patch maker (if we want to release our crack), i recomen Gpatch by jes and patchit by Qapla
  54. gpatch i like better cause of ease of use and does some good patches on the other hand patchit
  55. gives u the source of the patch in C :-), other wiseuse Pascal or C and do ur own patch (not
  56. explained in this tut sorry).
  57.  
  58.  
  59. 3.- Let's Crack the splash screen:
  60.  
  61. ok once d/l the program u run it add se a nasty splash that says Thanks for trying WinTar blah
  62. blah,blah after some secs it shows u a license aggrement (ewww), now we don't like those 2 things
  63. so let's start by taking them away we enter softice and set a bpx on LoadBitmapA once we do this 
  64. we run the program again and boom u in Softice cause of one of the bpx u seted b4 now we can see 
  65. this (from the w32dasm dissaemble) :
  66.  
  67. * Reference To: USER32.SetTimer, Ord:01FEh   ; set time the splash screen is goin to show
  68.                                   |
  69. :0040F5F4 FF15F0C64200            Call dword ptr [0042C6F0]
  70. :0040F5FA E92D010000              jmp 0040F72C
  71.  
  72. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  73. |:0040F6FF(C)
  74. |
  75. :0040F5FF 6A67                    push 00000067    ; hmm nice push here (does nothing good)        
  76. :0040F601 A124A54200              mov eax, dword ptr [0042A524]
  77. :0040F606 50                      push eax
  78.  
  79. * Reference To: USER32.LoadBitmapA, Ord:0165h      ; this is where u land
  80.                                   |
  81. :0040F607 FF15D0C64200            Call dword ptr [0042C6D0]
  82. :0040F60D 8945DC                  mov dword ptr [ebp-24], eax
  83. :0040F610 8D859CFEFFFF            lea eax, dword ptr [ebp+FFFFFE9C]
  84. :0040F616 50                      push eax
  85. :0040F617 8B4508                  mov eax, dword ptr [ebp+08]
  86. :0040F61A 50                      push eax
  87.  
  88. * Reference To: USER32.BeginPaint, Ord:0009h  ; begin the painting of the splash
  89.                                   |
  90. :0040F61B FF1574C64200            Call dword ptr [0042C674] 
  91. :0040F621 8945F8                  mov dword ptr [ebp-08], eax
  92. :0040F624 8B45F8                  mov eax, dword ptr [ebp-08]
  93. :0040F627 50                      push eax
  94.  
  95. * Reference To: GDI32.CreateCompatibleDC, Ord:001Fh
  96.                                   |
  97. :0040F628 FF1590C44200            Call dword ptr [0042C490]
  98. :0040F62E 8945FC                  mov dword ptr [ebp-04], eax
  99. :0040F631 8B45DC                  mov eax, dword ptr [ebp-24]
  100. :0040F634 50                      push eax
  101. :0040F635 8B45FC                  mov eax, dword ptr [ebp-04]
  102. :0040F638 50                      push eax
  103.  
  104. * Reference To: GDI32.SelectObject, Ord:013Ch
  105.                                   |
  106. :0040F639 FF15B0C44200            Call dword ptr [0042C4B0]
  107. :0040F63F 8D45E0                  lea eax, dword ptr [ebp-20]
  108. :0040F642 50                      push eax
  109. :0040F643 6A18                    push 00000018
  110. :0040F645 8B45DC                  mov eax, dword ptr [ebp-24]
  111. :0040F648 50                      push eax
  112.  
  113. * Reference To: GDI32.GetObjectA, Ord:00DEh
  114.                                   |
  115. :0040F649 FF1598C44200            Call dword ptr [0042C498]
  116. :0040F64F 682000CC00              push 00CC0020
  117. :0040F654 6A00                    push 00000000
  118. :0040F656 6A00                    push 00000000
  119. :0040F658 8B45FC                  mov eax, dword ptr [ebp-04]
  120. :0040F65B 50                      push eax
  121. :0040F65C 8B45E8                  mov eax, dword ptr [ebp-18]
  122. :0040F65F 50                      push eax
  123. :0040F660 8B45E4                  mov eax, dword ptr [ebp-1C]
  124. :0040F663 50                      push eax
  125. :0040F664 6A00                    push 00000000
  126. :0040F666 6A00                    push 00000000
  127. :0040F668 8B45F8                  mov eax, dword ptr [ebp-08]
  128. :0040F66B 50                      push eax
  129.  
  130. * Reference To: GDI32.BitBlt, Ord:000Ah
  131.                                   |
  132. :0040F66C FF1588C44200            Call dword ptr [0042C488]
  133. :0040F672 8B45FC                  mov eax, dword ptr [ebp-04]
  134. :0040F675 50                      push eax
  135.  
  136. * Reference To: GDI32.DeleteDC, Ord:0043h
  137.                                   |
  138. :0040F676 FF1584C44200            Call dword ptr [0042C484]
  139. :0040F67C 8B45DC                  mov eax, dword ptr [ebp-24]
  140. :0040F67F 50                      push eax
  141.  
  142. * Reference To: GDI32.DeleteObject, Ord:0046h
  143.                                   |
  144. :0040F680 FF158CC44200            Call dword ptr [0042C48C]
  145. :0040F686 8D859CFEFFFF            lea eax, dword ptr [ebp+FFFFFE9C]
  146. :0040F68C 50                      push eax
  147. :0040F68D 8B4508                  mov eax, dword ptr [ebp+08]
  148. :0040F690 50                      push eax
  149.  
  150. * Reference To: USER32.EndPaint, Ord:00AFh
  151.                                   |
  152. :0040F691 FF1570C64200            Call dword ptr [0042C670]
  153. :0040F697 B801000000              mov eax, 00000001
  154. :0040F69C E992000000              jmp 0040F733
  155.  
  156. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  157. |:0040F721(C)
  158. |
  159. :0040F6A1 8B4510                  mov eax, dword ptr [ebp+10]
  160. :0040F6A4 50                      push eax
  161. :0040F6A5 8B4508                  mov eax, dword ptr [ebp+08]
  162. :0040F6A8 50                      push eax
  163.  
  164. * Reference To: USER32.KillTimer, Ord:0162h ; kiil the timer set b4 to show the splash 
  165.                                   |
  166. :0040F6A9 FF15F4C64200            Call dword ptr [0042C6F4]
  167.  
  168.  
  169. ok u can see here one thing the line that contains push 00000067 in 40f5ff does nothing
  170. so to crack the splash screen we chage this
  171.  
  172. :0040F5FF 6A67                    push 00000067    ; hmm nice push here (does nothing good)
  173. to this
  174. :0040F5FF E9A5000000              JMP  0040F6A9    ; Nice jump, kills the timer and the splash
  175.  
  176. so here the splash screen is disabled and we can continue cracking.
  177.  
  178. 4.- Lic. screen removal:
  179.  
  180. ok this par needs some zen cracking :-) this is part of the disssemble in w32dasm :
  181.  
  182.  
  183. :004094DD 813D3C5A420000010000    cmp dword ptr [00425A3C], 00000100
  184. :004094E7 0F8533000000            jne 00409520
  185. :004094ED 8B4508                  mov eax, dword ptr [ebp+08]
  186. :004094F0 50                      push eax
  187. :004094F1 E80AEFFFFF              call 00408400    ; call the lic screen(how did i got here ?
  188.                                                    ; like i said zen cracking :-)
  189. :004094F6 83C404                  add esp, 00000004
  190. :004094F9 85C0                    test eax, eax
  191. :004094FB 0F851F000000            jne 00409520
  192. :00409501 C705105C420001000000    mov dword ptr [00425C10], 00000001
  193. :0040950B 6A00                    push 00000000
  194. :0040950D 6A00                    push 00000000
  195. :0040950F 6A10                    push 00000010
  196. :00409511 8B4508                  mov eax, dword ptr [ebp+08]
  197. :00409514 50                      push eax
  198.  
  199. this is what the call to the lic screen is :
  200.  
  201. * Referenced by a CALL at Address:
  202. |:004094F1   
  203. |
  204. :00408400 55                      push ebp      ; this code is only checking if the file is not
  205.                                                 ; delted or something like that 
  206. :00408401 8BEC                    mov ebp, esp
  207. :00408403 83EC08                  sub esp, 00000008
  208. :00408406 53                      push ebx
  209. :00408407 56                      push esi
  210. :00408408 57                      push edi
  211. :00408409 C745F867844000          mov [ebp-08], 00408467
  212. :00408410 6A00                    push 00000000
  213. :00408412 8B45F8                  mov eax, dword ptr [ebp-08]
  214. :00408415 50                      push eax
  215. :00408416 8B4508                  mov eax, dword ptr [ebp+08]
  216. :00408419 50                      push eax
  217. :0040841A 6A66                    push 00000066
  218. :0040841C A124A54200              mov eax, dword ptr [0042A524]
  219. :00408421 50                      push eax
  220.  
  221. * Reference To: USER32.DialogBoxParamA, Ord:008Ah
  222.                                   |
  223. :00408422 FF15C8C64200            Call dword ptr [0042C6C8]
  224. :00408428 8945FC                  mov dword ptr [ebp-04], eax
  225. :0040842B 837DFC02                cmp dword ptr [ebp-04], 00000002
  226. :0040842F 0F8512000000            jne 00408447
  227.  
  228. * Possible Reference to String Resource ID=03302: "The licence agreement file is missing or 
  229.                                                    corrupted.  Please "
  230.                                                    ; as u can see here if u delete the 
  231.                                                    ; licence.txt u get this msg  
  232.  
  233. ok what we can do here is this since none of the checking of calling is done AFTER the call
  234. once it finds a ret the program says ok this guy pushed the i agree button, continue, so what we
  235. can do here is give the program a ret, whe change this : 
  236.  
  237. :00408400 55                      push ebp
  238. to this
  239. :00408400 C3                      ret
  240.  the program calls the screen but a ret(return from call) is there so it returns to the program.
  241.  
  242.  
  243. 5.- The 1s part of the time trial:
  244.  
  245. ok now once we dissabled all of the nag's and nasty stuff we need to take the 30 day trial 
  246. we try and find something on the nag box in w32dasm what we find is just a lot of garbage in this
  247. nag (not gabage but dificult to follow) how about something else ? hmm the .ini ? ok let's try 
  248. we search for it and land here :
  249.  
  250. * Possible StringData Ref from Data Obj ->"wintar.ini"
  251.                                   |
  252. :00409275 A1485A4200              mov eax, dword ptr [00425A48]
  253. :0040927A 50                      push eax
  254. :0040927B 6A00                    push 00000000
  255.  
  256. * Possible StringData Ref from Data Obj ->"Validate"
  257.                                   |
  258. :0040927D 68405C4200              push 00425C40
  259.  
  260. * Possible StringData Ref from Data Obj ->"UserOpt"
  261.                                   |
  262. :00409282 684C5C4200              push 00425C4C
  263.  
  264. * Reference To: KERNEL32.GetPrivateProfileIntA, Ord:00F9h
  265.                                   |
  266. :00409287 FF152CC54200            Call dword ptr [0042C52C]
  267. :0040928D 8985F4FEFFFF            mov dword ptr [ebp+FFFFFEF4], eax
  268. :00409293 E91A000000              jmp 004092B2
  269.  
  270. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  271. |:0040926F(C)
  272. |
  273. :00409298 6A00                    push 00000000
  274.  
  275. * Possible StringData Ref from Data Obj ->"Validate"
  276.                                   |
  277. :0040929A 68545C4200              push 00425C54
  278.  
  279. * Possible StringData Ref from Data Obj ->"UserOpt"
  280.                                   |
  281. :0040929F 68605C4200              push 00425C60
  282. :004092A4 E896E2FFFF              call 0040753F                 ; if you follow in SI here u will
  283.                                                                 ; find that this call does 
  284.                                                                 ; does something strange so we 
  285.                                                                 ; go to the call  
  286. :004092A9 83C40C                  add esp, 0000000C
  287. :004092AC 8985F4FEFFFF            mov dword ptr [ebp+FFFFFEF4], eax
  288.  
  289. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  290. |:00409293(U)
  291. |
  292. :004092B2 83BDF4FEFFFF00          cmp dword ptr [ebp+FFFFFEF4], 00000000
  293. :004092B9 0F850D000000            jne 004092CC
  294. :004092BF E89CE8FFFF              call 00407B60                ; take a deep look :-)
  295. :004092C4 85C0                    test eax, eax
  296. :004092C6 0F849B000000            je 00409367
  297.  
  298. this is what we get by the call at 4092A4 
  299.  
  300. * Referenced by a CALL at Addresses:
  301. |:004092A4   , :00410C4F   , :00410C7F   , :00410C98   , :00410CB1  
  302. |:00410CCA   , :00410CE3   , :00410CFC   , :00410D15   , :00410D2E    
  303. |:00410D47   , :00410D60   , :00410D80   , :00410D99   , :00410DB2   
  304. |:00410DCB   , :00410DE4   , :00410DFD   , :00410E16   , :00411304   
  305. |:0041131D   , :00416C74   , :00416C8F   , :00416CAA   , :00416F4F   
  306. |:00416F6A   , :00416F85   , :00417415   , :00417622   , :004177C1   
  307. |:004177E2   , :0041788D   , :00417961   , :00417982   , :004179A3   
  308. |                                                                
  309.                                                    ; WOW this part sure does get called !
  310. :0040753F 55                      push ebp
  311. :00407540 8BEC                    mov ebp, esp
  312. :00407542 81EC14010000            sub esp, 00000114
  313. :00407548 53                      push ebx
  314. :00407549 56                      push esi
  315. :0040754A 57                      push edi
  316. :0040754B C745F404010000          mov [ebp-0C], 00000104
  317. :00407552 833D3856420000          cmp dword ptr [00425638], 00000000 ; is the flag Zero ?
  318. :00407559 0F8507000000            jne 00407566                       ; no then bug off
  319. :0040755F 33C0                    xor eax, eax
  320. :00407561 E9A0000000              jmp 00407606     
  321.  
  322. what we can do here is simple we look at our Registers ans check is EAX is zero b4 it called this
  323. part........ we check and see that it is zero so this is getting better :) what we do here is 
  324. simple ok remeber the lic. removal part how the call only wanted a ret ? ok so this is equal 
  325. change this: 
  326.  
  327. :0040753F 55                      push ebp
  328. to this
  329. :0040753F C3                      RET
  330. there now the MARKER (if you set the time ahead or b4 30 days) is removed.
  331.  
  332.  
  333. 6.- The 2nd part of the time trial:
  334.  
  335. ok now we need to remove the 30 day check this will ALSO require more zen (this is prolly a zen
  336. tut and not a time trial :] ) but not many zen if u are a good looker u can see this call after
  337. the check mark call :
  338.  
  339. :004092BF E89CE8FFFF              call 00407B60 ; this is our check our time call :-)
  340.  
  341. unlucky us u can't do the RET trick here :-( so we go deep inside the call and find this:
  342.  
  343.  
  344. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  345. |:00407CA1(C)
  346. |
  347. :00407CB1 833DB457420000          cmp dword ptr [004257B4], 00000000 ; check the flag to zero
  348. :00407CB8 0F850A000000            jne 00407CC8                       ; no? the bug off 
  349. :00407CBE B801000000              mov eax, 00000001                  ; and move EAX to 1
  350.                                                                      ; wich 1 = bad time
  351. :00407CC3 E902000000              jmp 00407CCA                       ; jump to return
  352.  
  353. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  354. |:00407CB8(C)
  355. |
  356. :00407CC8 33C0                    xor eax, eax
  357.  
  358. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  359. |:00407CC3(U)
  360. |
  361. :00407CCA E900000000              jmp 00407CCF
  362.  
  363. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  364. |:00407BA4(U), :00407BBA(U), :00407BE6(U), :00407C1A(U), :00407C65(U)
  365. |:00407CCA(U)
  366. |
  367. :00407CCF 5F                      pop edi
  368. :00407CD0 5E                      pop esi
  369. :00407CD1 5B                      pop ebx
  370. :00407CD2 C9                      leave
  371. :00407CD3 C3                      ret
  372.  
  373. ok now here the program is looking for something, what could it be ?..........
  374. ok if we continue with eax in 1 we get the sorry screen and a help file opens and our program
  375. terminates, we don't like this so we go back here and check again, ok i got it it checks if eax
  376. is ZERO if it is then the guy is still on the 30 day limit, so we change this :
  377.  
  378. :00407CBE B801000000              mov eax, 00000001                  ; and move EAX to 1
  379. to this
  380. :00407CBE B800000000              mov eax, 00000000                  ; and move EAX to 0
  381.  
  382. now the program even if you are on the 30 day limit it will let you use it for the rest of your
  383. life :-).
  384.  
  385. 7.-Last Notes:
  386. ok now to finally do our crack we enter a hexeditor and search for the opcodes and change them 
  387. (like,i said at the beggining i assume you allready know this).
  388.  
  389.  
  390. 8.-Notes:
  391.  
  392. You could search for the text UNREGISTERED and changed to anything u like like CrackedVer.
  393. ans search for the string Days left and change it to anything as well i will not explain this 
  394. because i think AT least the programmers deserve that since u cracking the software :-).
  395.  
  396.  
  397. 9.-Thak you's:
  398.  
  399. Ok thaks go to the follwing persons:
  400. JosephCo: keep up the good work d00d
  401. mpbaer: ha Rebirth ROX !!!!!! :)))
  402. Razzi: ur tuts rule !!!
  403. ^pain^: cause u cool :)
  404. tHATDUDE: he isnpired me to become a cracker :-)
  405. Fant0m : damm ur coding is good
  406. GThorne: haha this guy rox the world ! 
  407. Tgunner: 10x for everything
  408. lgb: 10q as well for all the help and support :)
  409. blorght: the only female i seen (err on irc) that can do a lot of stuff ! u rule babe :-)
  410. Griml0ck: he inspired me and asked me to this tut :-) ok d00d for you here it goes.
  411. TeRaphY: this guy is kewl as well :) 
  412. Krazy_N: he is not crazy but he is kewl :) 
  413. all the regulars of #cracking4newbies thanks that shows us that we growing ! :-) 
  414. #cracking all of the guys in it aswell retf in especial :-P
  415. #revolt bring up the warez ! :) 
  416. cat|man: thanks for those sites :) 
  417. if i forgot anyone please let me know i will respond ahh ok 10q :)
  418. oh and also all of the ppl that shows some cracking teaching or explaining !!
  419.  
  420.                                                    nIabI[ME'97]
  421.  
  422.  
  423.